package com.docmgmt.mvp.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Data;

import java.util.List;

/**
 * 文件夹视图对象（响应DTO）
 */
@Data
@Builder
public class FolderVO {

    /**
     * 文件夹ID
     */
    private Long id;

    /**
     * 文件夹名称
     */
    private String name;

    /**
     * 父文件夹ID（0表示根目录）
     */
    @JsonProperty("parent_id")
    private Long parentId;

    /**
     * 完整路径
     */
    private String path;

    /**
     * 层级（1为顶层）
     */
    private Integer level;

    /**
     * 文件夹描述
     */
    private String description;

    /**
     * 创建者ID
     */
    @JsonProperty("creator_id")
    private Long creatorId;

    /**
     * 创建者名称
     */
    @JsonProperty("creator_name")
    private String creatorName;

    /**
     * 所有者ID
     */
    @JsonProperty("owner_id")
    private Long ownerId;

    /**
     * 所有者名称
     */
    @JsonProperty("owner_name")
    private String ownerName;

    /**
     * 文件夹类型（v3.0新增）
     * personal: 个人文件夹
     * shared: 共享文件夹
     */
    @JsonProperty("folder_type")
    private String folderType;

    /**
     * 默认隐私级别（v3.0新增）
     * privacy: 仅创建者可见
     * shared: 同部门可见
     * public: 所有人可见
     */
    @JsonProperty("default_privacy")
    private String defaultPrivacy;

    /**
     * 子文件夹数量
     */
    @JsonProperty("subfolder_count")
    private Integer subfolderCount;

    /**
     * 文件数量
     */
    @JsonProperty("file_count")
    private Integer fileCount;

    /**
     * 创建时间（ISO 8601格式）
     */
    @JsonProperty("created_at")
    private String createdAt;

    /**
     * 更新时间（ISO 8601格式）
     */
    @JsonProperty("updated_at")
    private String updatedAt;

    /**
     * 子文件夹列表（仅在获取树形结构时返回）
     */
    private List<FolderVO> children;
}
